Эрдмийн ажлын зургийн ажлыг нээлттэй програм ашиглан гүйцэтгэх
Нюфлот (Gnuplot) ба Имижмажик (Imagemagick)
"Гурвадугаар хэсэг"
Шинжлэх ухаан, инженерчлэлийн тайлан, төсөл, өгүүллэгийн зураг, графикийг өндөр чанартай сайн боловсруулах ёстой гээд л өмнөх хоёр цуврал дээр бичсэн учир дахин давтаад яахав. График зураг боловсруулах эхний, дэд өгүүллэгүүдийг уншаарай.
Гэхдээ бас хэдэн зүйл нэммээр санагдлаа. Аливаа зүйл хүний нүдэнд маш аятайхан харагдаж байвал харж уншиж буй хүндээ илүү их мэдээллийг өгөх болно. Тиймээс шинжлэх ухааны графикч бай түүнийг урлаг, уран зураг мэт харж харьцаж ажиллах хэрэгтэй. Мэдрэмж их чухал шүү. Харагдац муутай зураглал уг ажлын мөн чанар, чансааг бууруулдаг, ажиллаж буй хүмүүсийг чадваргүй мэт харагдуулдаг тал бий. Нөгөө хүнийг царайгаар нь угтаж, ухаанаар нь үднэ гэдэг шиг л..
За энэ өгүүллээр баганан график байгуулах, зургуудыг хооронд нь нийлүүлэх гэх мэт ажлыг яаж хийх тухай авч үзнэ. Графикийг бол нюфлот бол ямар л бол ямар л хэлбэр, загвараар үйлдвэрлэж гаргах боломжтой бол Имижмажик бол зургийг болон зургуудыг яаж л бол яаж л янзалж чадах хоёулаа нээлттэй, үнэгүй, коммандын мөрөөр ажилладаг програм хангамж юм. Нээлттэй үүсвэрийн нэг дутагдал нь хэрэглэгчийн санал хүсэлтийг тусгаж шинэ хувилбар гарах гэж уддаг. Түүнээс бол ямар нэгэн зохиогчийн эрхийн асуудал зөрчигдөхгүй, чадвар өндөртэй програмууд юм.
1. Хоёр зүйлийг харьцуулсан баганан график байгуулах
Хоёр зүйлийг хэд хэдэн тохиолдолд харьцуулж харуулах шаарлага гарна. Энэ тохиолдолд жишээ болгож цуваа ба зэрэгцээ кодоор өөр өөр хөрвүүлэгч дээр тооцоо хийж харцуулсаныг харуулая. График байгуулах нюфлот код нь:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | reset set term postscript color enhanced font "Times-New-Roman, 30" set output "Compare.esp" set xtics ("PGI Fortran" 0.25, "Intel Fortran" 1.75, "CUDA Fortran" 3.25,) set boxwidth 0.5 set style fill solid set ylabel "Elapsed time (ms)" set xlabel "Compilers" set label 1 "1058.39" at -0.2,1100 font ",20" set label 2 "461.52" at 0.3,500 font ",20" set label 3 "301.61" at 1.3,350 font ",20" set label 4 "93.75" at 1.8,140 font ",20" set label 5 "80.45" at 2.8,120 font ",20" set label 6 "15.74" at 3.3,80 font ",20" plot 'data.dat' every 2 using 1:2 with boxes ls 1 lc rgb 'red' title "Entropic (KBC)",\ 'data.dat' every 2::1 using 1:2 with boxes ls 2 lc rgb 'blue' title "Standard (BGK)" set term win unset output |
1 2 3 4 5 6 7 8 9 10 | 0 1058.396 0.5 461.5206 1.5 301.6094 2 93.75 3 80.4576 3.5 15.7372 |
Өөрөөр хэлбэл мэдээний 0 гэсэн тооны оронд PGI Fortran гэсэн үг байна гэх мэтчилэн оноож бичихийг кодны 5 дахь мөрөнд бичсэн байна. Нюфлотоор зураг үйлдэхдээ график бол ихэвчлэн Гостскриптээр хэвлэж гаргавал өндөр нягтаршилтай байна. Зураг тохиолдолд png jpg tiff гэх мэт өргөтгөлийн терминал ашиглаж болно. Ямар терминал ашиглахыг кодны 2-р мөр дээр бичсэн байна. Багана тус бүрийн орой дээр тоон утгыг бичихдээ тэмдэглэгээ маягаар бичиж болно. үүнийг кодны 12-19 дүгээр мөрөнд бичсэн байгааг хараарай. Кодны 21 ба 22 мөрөн дээр гол график босгох комманд байна. Энд байх шинэ комманд нь every гэж байх ба энэ нь алгасах мөрийг зааж өгнө. 2 мөр хоосон алгасаж графикаа зураарай гэсэн үг.
every I:J:K:L:M:N |
| ||||||||||||
every 2 | plot every 2 line | ||||||||||||
every ::3 | skip the first 3 lines | ||||||||||||
every ::3::5 | plot from the 4-th to 6-th lines | ||||||||||||
every ::0::0 | plot the first line only | ||||||||||||
every 2::::6 | plot the 1,3,5,7-th lines | ||||||||||||
every :2 | plot every 2 data block | ||||||||||||
every :::5::8 | plot from 5-th to 8-th data blocks |
Дээрх боломжит хувилбарууд байх нь байна. Ингээд бусад нь зурагтайгаа тааруулаад харвал ойлгогдох бай. Коднууд нь ихэвчлэн үгнүүдийн эхний үсэг байдаг гэдгийг санаарай. Тухайлбал ls гэдэг нь line style гэсэн үг болно. Постскрифт терминаль нь бусад терминаалаас илүү олон өнгө, загварын сонголттой байдаг.
2. Олон тохиолдлыг баганан графикаар харуулах
Жишээ нь нэг өрхийн малын тоог таван хошуу малын төрлөөр гаргая гэвэл энэ төрлийн график зурах хэрэгтэй болно. Бид энэ тохиолдолд ЛБА-ын дэд програмууд тооцоонд хэрхэн цаг зарцуулдаг вэ гэдгийг байгуулая.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | reset set term postscript color enhanced font "Times-New-Roman, 30" set output "Compare1.esp" set xlabel "Kernels in ELBM" #set x and y label set xtics ("Ini" 0, "Equi" 1, "Ent" 2, "Coll" 3, "Str" 4, "Boun" 5, "Macr" 6,) set ylabel "Elapsed times by percent (%)" #set xrange [-0.5:4.5] #set x and y range #set yrange [0:40] set style fill solid #set plot style set boxwidth 0.5 unset key plot "kernel1.txt" using 1:2 with boxes lc rgb 'red',\ "kernel1.txt" using 1:($2+2):2 with labels |
1 2 3 4 5 6 7 | 0 3.31 1 6.51 2 41.46 3 15.33 4 9.02 5 3.49 6 20.86 |
Энд 0 - ээс 6 хүртэлх нь хэвтээ чиглэлд байгаа Ini, Equi, Ent гэх мэт тохиолдол/төрлүүдэд харгалзах юм. ҮҮнийг кодны 6-р мөрөнд коммандыг нь оруулж өгсөн байна. Энэ кодонд баганууд дээр тэдгээрийн утгуудыг автоматаар байрлуулахаар 14-р мөрөнд зааж өгсөн байна. Өмнөх графикт бид өөрсдөө бичсэн бол энэ удаад автоматаар зайгаа тааруулж гарч ирэх нь байна. 1:($2+2):2 гэдгийн доллах 2 дээр нэмэх нь 2 гэдэг нь баганын дээд ирмэгээс хэр зайд байрлахын зааж өгнө.
3. Хоёр босоо тэнхлэгтэй, хэвтээ тэнхлэг дээрээ тоо бус аргументтай шугаман график байгуулах
Энэ нийтлэлд хэвтээ ба босоо аль нэг тэнхлэг нь тоо бус үг байх тохиолдлын графикууд юм. Хоёр хэмжээст график нь ихдээ 4-н тэнхлэгтэй байх боломжтой. 2 хэвтээ, хоёр босоо тэнхлэгтэй байж болно. Энд хоёр босоо тэнхлэгийг нэг хэвтээ тэнхлэгтэй яаж байгуулах талаар авч үзье.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | reset set term postscript landscape color enhanced font "Times-New-Roman, 30" set size 1.2,1.0 set output "Compare2.esp" set xlabel "Grid resolutions" #set x and y label set xtics ("300x100" 0, "600x200" 2, "1200x400" 4, "2400x800" 6,) set ylabel "Performance (GFLOP/s)" set y2label "Memory bandwidth (GB/s)" set y2tics (1.0,1.1,1.2,1.3,1.4) set ytics nomirror #set yrange [180:280] set ytics (180,200,220,240,260) #set yrange [0:40] set key top right plot "band.dat" using 1:2 with lp lt 10 lw 4 lc rgb 'red' axes x1y1 title "Computational throughput",\ "band.dat" u 1:3 with lp lt 11 lw 4 lc rgb "blue" axes x1y2 title "Effective bandwidth" set term win unset output |
1 2 3 4 | 0 186.0266720914353 0.9673386948754638 2 211.9123067968700 1.101943995343724 4 235.3015140803687 1.223567873217917 6 262.0016457724636 1.362408558016811 |
Хоёр график давхацсан байгаа учир нэг шугам шиг гарсан байна. Кодны 16-р мөрийн кодыг харвал банд гэсэн мэдээний 1:2-р мөрийг ашиглах ба тйи тийм зураасны төрөл өргөнтэй байхаар улаан өнгөөр тэнхлэг axes x1y1 дээр зурна гэсэн байна. 17-р мөрөнд тэгвэл axes x1y2 гэж бичигдэх нь ойлгомжтой. Иймэрхүү маягийн график зурж болох нь байна. Нэг гол зүйл нь ворд энэ тэрлүү зургаа оруулахад *.esp файл орж ирэхгүй учир png эсвэл jpg рүү хувиргах хэрэгтэй болно. Харин ЛАТЕХ ашиглах тохиолдолд хувиргах шаардлагагүй шууд дуудаж оруулах боломжтой. Аливаа зургийн өргөтгөлийг сольж хөрвүүлэхэд имижмажик хэрэглэгдэнэ.
Тухайлбал хамгийн сүүлийн "Compare2.esp" графикийг хөрвүүлэхдээ:
1 | convert -units PixelsPerInch -density 400 Compare1.esp Comp.jpg |
4. Олон зургийг хооронд нь нийлүүлэх
Хоёр ба түүнээс олон зүйлсийг харьцуулах, эсвэл цаг хугацааны дараалалтай харуулах тохиолдолд зургуудыг бөөр бөөрөөр нь нийлүүлэх шаардлага гардаг. Ворд дээр хүснэгтэлж байгаад эдгээр зургуудыг хийгээд янзалж болох ч бүгдийх нь хэмжээ адилхан болохгүй, том жижиг харагдах магадлалтай байна. Тухайлбал дараах гурван зургийг авч үзье.
Энэ гурван тусдаа зургийг нэг болгоод нэгтгэхдээ цуваа байдлаар нэгтгэе.
1 2 | montage -units PixelsPerInch -density 400 128ga.jpg 256ga.jpg 512ga.jpg -tile 3x1 -geom etry 1000x1000+1+1 montage.jpg |
Зургуудыг эхнээс нь нэрлэх ба хэвтээ чиглэлийн дагуу нэрлэж эхэлнэ. 4 мөр, 3 баганатай зураг болгох байлаа гэж бодоход эхний мөрний зургуудыг нэрлэж дуусаад 2 дахь баганаруу орох жишээний. Дээрх коммандад -tile 3x1 гэдэг нь 3 багана нэг мөр зургийн байрлал үүсгэнэ гэсэн үг юм. 4 мөр х 3 баганаар гэвэл -tile 3x4 гэнэ. Үүний дараа геометрийг -geometry нь зааж өгөхдөө эхлээ хэвтээ босоо пикселийг 1000x1000 дараа нь зураг бүрийн хоорондох зайн хэмжээг +1+1 заана. Гарсан зураг нь дараах байдалтай байна.
Гэх мэтээр хэдэнч зургуудыг хүснэгтэлж нийлүүлж болно. өндөр нарийвчлалтай байлгахын тулд -density гэдэг коммандыг ашиглаж байгаа юм. Энэ нь тухайн зургийн dpi -ийг тохируулж байгаа юм.
No comments:
Post a Comment