Mve: PNG ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ makecene์ด ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2017๋…„ 09์›” 05์ผ  ยท  30์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: simonfuhrmann/mve

์Šค์Šค๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” makecene ๋ช…๋ น์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Ubuntu 16.04 64๋น„ํŠธ์—์„œ Readme.md์˜ ์ง€์นจ์— ๋”ฐ๋ผ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋ณต์ œํ•˜๊ณ  ๋นŒ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ๊ฐ€ ์˜ค๋ฅ˜ ์—†์ด ์ปดํŒŒ์ผ๋˜๊ณ  ๋ชจ๋“  ์•ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ -i ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ makecene ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด, ์žฅ๋ฉด ํด๋”๋งŒ ์ƒ์„ฑํ•œ ๋‹ค์Œ "Ungรผltiger Maschinenbefehl(Speicherabzug geschrieben)" ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค(์ €๋Š” ๋…์ผ ๋ฒ„์ „์˜ Ubuntu๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค).

๋ช…๋ น์ด ์–ผ๋งˆ๋‚˜ ๋ฉ€๋ฆฌ ์‹คํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ์— ์ถœ๋ ฅ ๋ฉ”์‹œ์ง€๋ฅผ ์ถ”๊ฐ€ํ–ˆ์œผ๋ฉฐ ๋ถ„๋ช…ํžˆ ์ถฉ๋Œ์ด image_io.cc ํŒŒ์ผ, load_png_file ํ•จ์ˆ˜์—์„œ ํฌ์ธํ„ฐ๊ฐ€ ์„ค์ •๋˜๋Š” 311-314 ํ–‰ ์ฃผ๋ณ€์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ ๊ณ ์ณ์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. headers.height ๋ฐ headers.channels์˜ ๊ฐ’์€ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  30 ๋Œ“๊ธ€

image_io ์˜ ์ถฉ๋Œ์€ ์ƒ๋Œ€์ ์œผ๋กœ ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๊ณ  ์ด๋ฏธ์ง€๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

#include "mve/image_io.h"
int main() {
  mve::image::load_png_file("your path");
  return 0;
}

์ด๋ฏธ์ง€์— ๋‹ค๋ฅธ ํŠน๋ณ„ํ•œ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? 8๋น„ํŠธ ๋˜๋Š” 16๋น„ํŠธ PNG์ž…๋‹ˆ๊นŒ?

์ž, ํ…Œ์ŠคํŠธ ํ”„๋กœ๊ทธ๋žจ์„ ์ปดํŒŒ์ผํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์•ฑ๊ณผ ๊ฐ™์€ ํด๋”์— ์žˆ๋Š” PNG๋ฅผ ๋กœ๋“œํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์—ˆ๊ณ  ํ”„๋กœ๊ทธ๋žจ์€ "Ungรผltiger Maschinenbefehl (Speicherabzug geschrieben)"๊ณผ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ "load_tiff_file"๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ๋Œ€์‹  TIFF ํŒŒ์ผ์„ ๋กœ๋“œํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. load_png_file ํ•จ์ˆ˜๊ฐ€ ๊ตฌ์ฒด์ ์œผ๋กœ ์†์ƒ๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์ด ๋„์›€์ด ๋ ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์ฝ”๋“œ๋ฅผ load_png_file๋กœ ๋‹ค์‹œ ๋ณ€๊ฒฝํ•˜๊ณ  strace๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์•ฑ๊ณผ ๊ด€๋ จ๋œ ์‹œ์Šคํ…œ ๋กœ๊ทธ๋ฅผ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ถฉ๋Œํ•˜๊ธฐ ์ „์— ํ•ด๋‹น ๋กœ๊ทธ์˜ ๋งˆ์ง€๋ง‰ ๋ช‡ ์ค„์ž…๋‹ˆ๋‹ค.

14:00:46.197536 open("./frame_0001.png", O_RDONLY) = 3
14:00:46.197561 fstat(3, {st_mode=S_IFREG|0664, st_size=407653, ...}) = 0
14:00:46.197582 ์ฝ๊ธฐ(3, "\211PNG\r\n\32\n\0\0\0\rIHDR\0\0\5\0\0\0\2\320\10\2\0 \0\0@\37J"..., 4096) = 4096
14:00:46.197651 mmap(NULL, 2768896, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fcadc163000
14:00:46.198666 --- SIGILL {si_signo=SIGILL, si_code=ILL_ILLOPN, si_addr=0x40b69d} ---
14:00:46.337334 +++ SIGILL์— ์˜ํ•ด ์ฃฝ์ž„(์ฝ”์–ด ๋คํ”„) +++

๊ทธ ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ๋ณด๋‚ด์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋‚ด ์ƒ๊ฐ์—๋Š” ์ด๋ฏธ์ง€์— png ํ™•์žฅ์ž๊ฐ€ ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” png๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค... ".png" ํŒŒ์ผ์ด ์‹ค์ œ๋กœ jpeg๋กœ ์ธ์ฝ”๋”ฉ๋œ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๋ฅผ ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

http://maxdid.it/gamejam/img/frame_0001.png

ffmpeg๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋””์˜ค ํ”„๋ ˆ์ž„์„ ์ด๋ฏธ์ง€ ํŒŒ์ผ๋กœ ๋‚ด๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค.

์ž˜๋ชป๋œ ํŒŒ์ผ ํ˜•์‹์ผ ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๋ณ€ํ™˜ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ png์—์„œ tiff๋กœ ๋ณ€ํ™˜ํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ๋ณ€ํ™˜ํ–ˆ์ง€๋งŒ ์•„๋ฌด๋Ÿฐ ํšจ๊ณผ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ์€ ์—ฌ๊ธฐ์—์„œ ์ž˜ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.

open("frame_0001.png", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0640, st_size=691915, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5395d8a000
read(3, "\211PNG\r\n\32\n\0\0\0\rIHDR\0\0\5\0\0\0\2\320\10\2\0\0\0@\37J"..., 4096) = 4096
mmap(NULL, 2768896, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f5393b87000
read(3, "\7\0?)\363\207i\27\30x'\356\330\214Xg\7\260\334W\23G\371\323\31 \323\2S\273\353\\"..., 4096) = 4096
...

strace ์— ๋”ฐ๋ฅด๋ฉด ํ”„๋กœ๊ทธ๋žจ์€ SIGILL(KILL ์•„๋‹˜)์— ์˜ํ•ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ๊ท€ํ•˜์˜ ํ”„๋กœ์„ธ์„œ ๋˜๋Š” OS๊ฐ€ ์ž˜๋ชป๋œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ  ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์œผ๋‚˜ ๋‹น์‹ ์˜ ์‹œ์Šคํ…œ์ด๋‚˜ ๋‹น์‹ ์˜ libpng ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—‰๋ง์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. libpng๋ฅผ ๋‹ค์‹œ ์„ค์น˜/์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ž˜์„œ apt-get install์„ ํ†ตํ•ด ์„ค์น˜ํ•œ libpng ๋ฒ„์ „์„ ์ œ๊ฑฐํ•˜๊ณ  ๋Œ€์‹  libpng ์ €์žฅ์†Œ๋ฅผ ์ง์ ‘ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ ๋™์ผํ•œ ํšจ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด์ฉŒ๋ฉด ์ •๋ง ๋‚ด ํ”„๋กœ์„ธ์„œ์ž…๋‹ˆ๊นŒ? ํ˜„์žฌ ์ตœ์‹  ๋ชจ๋ธ์ด ์•„๋‹Œ AMD Phenom II X4 965 ํ”„๋กœ์„ธ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ์ด์ „์— ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋˜ ์ ์€ ์—†์—ˆ๋˜ ๊ฒƒ ๊ฐ™์•„์š”.

์–ด์จŒ๋“  ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๋ฅผ ๋‹ซ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์†Œ์‹์„ ๋“ฃ๊ฒŒ ๋˜์–ด ์œ ๊ฐ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์˜ ํ•˜๋“œ์›จ์–ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์•„์ด๋””์–ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. libpng์— ๋Œ€ํ•œ ํŠน์ • ๊ฐ€์† ๊ธฐ๋Šฅ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ์ปดํŒŒ์ผ ํƒ€์ž„ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ์‹œ์ ์—์„œ ๋‚˜๋Š” ๋ฌธ์ œ์˜ ์›์ธ์ด ๋ฌด์—‡์ธ์ง€ ์ •๋ง๋กœ ์•Œ์ง€ ๋ชปํ•œ ์ฑ„ ์ถ”์ธกํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋งŽ์€ ์‹คํ—˜ ํ›„์— ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ makecene์ด ์ถฉ๋Œํ•˜๋Š” ์ด์œ ๋ฅผ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. libjpeg๋‚˜ libpng ๋•Œ๋ฌธ์ด ์•„๋‹ˆ๋ผ, ์‹ค์ œ ์ด์œ ๋Š” openMP ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. makecene.cc์—์„œ ๋‹ค์Œ ์ฝ”๋“œ๋กœ ์ด ๋ฒ„๊ทธ๋ฅผ ๊ณ ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
845 ๋ผ์ธ
mve::ImageBase::Ptr ์ด๋ฏธ์ง€;

์ˆœ์„œ๊ฐ€ ์ง€์ •๋œ ์ผ์ •์— ๋Œ€ํ•œ pragma omp ๋ณ‘๋ ฌ(๋™์ ,1)

for (std::size_t i = 0; i < dir.size(); ++i)

....
ํ‘œ์ค€::๋ฌธ์ž์—ด exif;

ํ”„๋ž˜๊ทธ๋งˆ omp ํฌ๋ฆฌํ‹ฐ์ปฌ

    image = load_any_image(afname, &exif);

...

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ๋ณ€ํ™”๋Š” ๋ณ„๋กœ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์“ฐ๋ ˆ๋“œ์—์„œ ๊ณต์œ ๋˜๋Š” image ๋ณ€์ˆ˜์— ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ์ง€๊ธˆ์€ ์ด๋ฏธ์ง€ ๋กœ๋”ฉ์ด ์ง๋ ฌํ™” ๋˜์—ˆ์ง€๋งŒ, ๊ฒฝ์Ÿ ์ƒํ™ฉ์œผ๋กœ ์ธํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋ฎ์–ด์“ฐ๊ฒŒ ๋˜๊ณ  ์ด๋ฏธ์ง€ ๋กœ๋”ฉ ํ›„ ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ..

์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•˜๊ธฐ ์ „์— #pragma omp critical์„ ๋„ฃ์–ด ๋ณด์…จ์Šต๋‹ˆ๊นŒ?

@timlgy , ๊ท€ํ•˜์˜ ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ์ข€ ๋” ์•Œ๋ ค์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์–ด๋–ค CPU, ์šด์˜ ์ฒด์ œ ๋ฐ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

Ubuntu 14.04.5 LTS, 16U32G์—์„œ ์ž‘๋™ํ•˜๊ณ  ์ปดํŒŒ์ผ๋Ÿฌ๋Š” gcc 4.8.4(Ubuntu 4.8.4-2ubuntu1~14.04.3) PS '์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ'๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์š”? prebundle.sfm?

์ด ๊ธฐ์‚ฌ์— ๋”ฐ๋ฅด๋ฉด #pragma omp critical
omp critical ์ง€์‹œ๋ฌธ์€ ํ•œ ๋ฒˆ์— ๋‹จ์ผ ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ ์„น์…˜์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ mve::ImageBase::Ptr imagel=oad_any_image(afname, &exif); ์•ˆ์— ์ด ์ฝ”๋“œ๋ฅผ ๋„ฃ์„ ๋•Œ 'load_any_image'๊ฐ€ ์œ„ํ—˜ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

load_any_image ๋Š” ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ๋•Œ ์Šค๋ ˆ๋“œ๋กœ๋ถ€ํ„ฐ ์•ˆ์ „ํ•œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ libpng ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. "์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ"๋ผ๋Š” ๋ง์€ ์œ„์˜ ์ฝ”๋“œ์—์„œ ์ด๋ฏธ์ง€๊ฐ€ ์‚ฌ์šฉ๋˜๊ธฐ ์ „์— ๋‹ค๋ฅธ ์ด๋ฏธ์ง€๋กœ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ๊ณ  ๋”ฐ๋ผ์„œ ๋ณด๊ธฐ์— ์ž˜๋ชป๋œ ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ๊ฐ€ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋Š๋‚Œ์„ ์–ป์œผ๋ ค๋ฉด ์ด๋Ÿฌํ•œ ์ถฉ๋Œ๋กœ ์ธํ•ด ์‹ค์ œ๋กœ ์˜ํ–ฅ์„ ๋ฐ›๋Š” ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ์ž…๋‹ˆ๊นŒ?

ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€(๋ชจ๋“  ์œ ํ˜•์˜ jpg tif ๋˜๋Š” png)๋งŒ ๋กœ๋“œํ•˜๋ฉด ๊ดœ์ฐฎ์ง€๋งŒ ๋‘ ๊ฐœ์˜ ์ด๋ฏธ์ง€(๋ชจ๋“  ์œ ํ˜•)๋ฅผ ๋กœ๋“œํ•˜๋ฉด ๋†’์€ ํ™•๋ฅ ๋กœ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ์˜ ์›์ธ์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ๋กœ๋“œ๊ฐ€ ๋ณ‘๋ ฌ๋กœ ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋ฉฐ ๋ฌธ์ œ๋ฅผ ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ •๋ง ํฐ ์ด๋ฏธ์ง€๋ฅผ ๋กœ๋“œํ•˜๋Š” ๊ฒฝ์šฐ ์ด ์ถฉ๋Œ์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๊นŒ? 2GB RAM ์‹œ์Šคํ…œ์—์„œ 32๊ฐœ์˜ ์ด๋ฏธ์ง€(์ฝ”์–ด๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ)๋ฅผ ๋ณ‘๋ ฌ๋กœ ๋กœ๋“œํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋™์•ˆ load_any_image #pragma omp critical ํ–‰์„ ๋„ฃ์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

@timlgy , ์ถฉ๋Œ์˜ ์—ญ์ถ”์ ์„ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๋˜ํ•œ "16U32G"๋Š” ๋ฌด์—‡์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

@andre-schulz 16U32G๋Š” CPU 16 ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ๋ฐ 32GB ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋ช…๋ น์— ์˜ํ•œ ์ตœ์‹  mve ๋นŒ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Windows 7 64x์—์„œ ๋™์ผํ•œ ์ถฉ๋Œ์„ ๊ด€์ฐฐํ–ˆ์Šต๋‹ˆ๋‹ค.

crash

load_any_image ์•ž์— #pragma omp critical ํ–‰์„ ๋„ฃ์œผ๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋นŒ๋“œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์—ฌ๊ธฐ์„œ OpenMP๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชฉ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

image

ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋งŒ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @stiv-yakovenko
์ •๋ณด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” png ํŒŒ์ผ์„ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๋˜ํ•œ ์–ด๋–ค CPU๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

cpuz

๋ฌธ์ œ๋Š” makescene ๊ฐ€ ๋””๋ฒ„๊ทธ ๋ชจ๋“œ์—์„œ ์ปดํŒŒ์ผ๋˜์—ˆ์ง€๋งŒ ๋ฆด๋ฆฌ์Šค ๋ชจ๋“œ์—์„œ libpng์— ์—ฐ๊ฒฐ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋Ÿฐํƒ€์ž„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(/MD ๋Œ€ /MDd)์— ๋Œ€ํ•œ ๋งํฌ ๋ฌธ์ œ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ˜„์žฌ ๋นŒ๋“œ ์‹œ์Šคํ…œ์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋” ์กฐ์‚ฌํ•ด์•ผ ํ•œ๋‹ค.
makescene ๊ฐ€ RelWithDebInfo ๋ชจ๋“œ์—์„œ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋””๋ฒ„๊ทธ ๋ชจ๋“œ์—์„œ makescene ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ํƒ€์‚ฌ CMakeLists.txt ์˜ Debug ์— CMAKE_CONFIGURATION_TYPES ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋””๋ฒ„๊ทธ ๋ชจ๋“œ์—์„œ ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋””๋ฒ„๊ทธ ๋ฒ„์ „์„ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•˜๊ณ  makescene ์˜ ๋””๋ฒ„๊ทธ ๋ฒ„์ „ ์œ„์น˜์— ์ง์ ‘ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ๋“  ์ด๊ฒƒ์„ ์ˆ˜์ •/์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋‚ด๋ ค๊ณ  ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ReleaseWithDeb ๋ฒ„์ „์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

@andre-schulz ์•ˆ๋…•ํ•˜์„ธ์š”, ๋””๋ฒ„๊ทธ ๋ชจ๋“œ์— ๋Œ€ํ•œ ๋ถ„์„์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋””๋ฒ„๊ทธ ๋ชจ๋“œ์—์„œ ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•˜๊ณ  makecene์˜ ๋””๋ฒ„๊ทธ ๋ฒ„์ „์— tiffd.dll, zlibd.dll์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ์—ฌ์ „ํžˆ ์ถฉ๋Œํ–ˆ์Šต๋‹ˆ๋‹ค.

png_read_image(png, &row_pointers[0]);

image

@andre-schulz ์ด์ œ ๊ดœ์ฐฎ์•„! ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ CMakeLists.txt์—์„œ CMAKE_CONFIGURATION_TYPES๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  MVE.sln์˜ ์ž…๋ ฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ตฌ์„ฑ์„ ์ˆ˜์ •ํ•œ ํ›„ ๋””๋ฒ„๊ทธ๋ฅผ ์™„์ „ํžˆ ์ปดํŒŒ์ผํ•œ ํ›„ jpg ๋กœ๋“œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

HelliceSaouli picture HelliceSaouli  ยท  12์ฝ”๋ฉ˜ํŠธ

daleydeng picture daleydeng  ยท  8์ฝ”๋ฉ˜ํŠธ

HelliceSaouli picture HelliceSaouli  ยท  14์ฝ”๋ฉ˜ํŠธ

GustavoCamargoRL picture GustavoCamargoRL  ยท  13์ฝ”๋ฉ˜ํŠธ

Jus80687 picture Jus80687  ยท  11์ฝ”๋ฉ˜ํŠธ