LINUX.ORG.RU

intrinsics в java


0

1

в общем если кто не в курсе я придумал проц и мы будем переть в скольково. проц точится под gpu но он dsp почти общего назначения, и может жрать нормальный код. и компилятор к нему llvm

то есть шейдеры на c++ и жабе будут. но есть одно но. нужны intrinsics и статическая компиляция. в c++, который так сильно ненавидят неосиляторы и оопнутые на всю голову, все работает. а как быть в жабе?

например интринсик rasterizer(vertex *, index*, size_t, int n_samples) запускает растеризатор. интринсик getpixel подбирает оттуда результат. а в жабе как? она же в ваш сраный байткод компилится

☆☆☆

да, шейдеры можно будет писать хоть на шелле. и даже юзать переменные из обычного кода. и даже вызывать его. это не шейдеры вообще а ваш обычный код будет. только обеспечьте интринсики

ckotinko ☆☆☆
() автор топика

И зачем сейчас нужна Java? Сперва пусть на C++ работает, потом мост в Java через JNI, а там уже думать — нужно ли дальше улучшать, или и так сойдет.

anonymous
()

Такое же должно дергаться через интерфейс из нативного кода, нафига тебе это реализовывать поверх вм? Крузис же никто не пишет на джаве.

У jvm есть интринсики, но это не то.

cdshines ★★★★★
()

ты хочешь чего-то странного, может быть ты хочешь написать свой jit-компилятор на c++?

maloi ★★★★★
()
Ответ на: комментарий от anonymous

ну как фича. типа надо показать что мы конкурентоспособны. заявка на отжимание поляны аж у арма, причем и gpu и cpu.

думал что можно показать возможность работы без дров еа жабе

ckotinko ☆☆☆
() автор топика

Если ты хочешь внедрить родные инструкции в код на Яве, придется хачить JIT или интерпретатор.

tailgunner ★★★★★
()
Ответ на: комментарий от ckotinko

JNI и вправду тяжелый. Только бояться этого не нужно.

Как обстоят дела по моей версии: нужно, чтобы при вызове rasterizer(...) запускались особенные команды твоего персонального процессора.

Про C++ верю на слово, что там все отлично, про Java — как-то ни разу не встречал нужды в таких методах; по ощущениям — придется javac патчить, что мало кому понравится.

Альтернативный вариант — все работает на C++, заказчик доволен и прыгает до потолка. Допрыгнув, снимает с потолка идею — а давайте-ка мне такую же вещь, но на Java! Вы ему и отвечаете — не вопрос, делаем интерфейс на JNI, быстро, надежно и практично.

Отмахиваться от этой идеи, по-моему, не стоит. На Java есть биндинги на OpenGL, а это очень похоже на твой случай — специализированные команды, работают очень быстро, задержек не любят. И никто на скорость не жалуется.

Наверняка там команды выполняются не один-в-один, а сперва набирается батч, который потом и отправляется в нативную библиотеку, в итоге накладных расходов — тьфу и растереть.

При желании можно с исходниками http://libgdx.badlogicgames.com/ ознакомиться, как они за производительность бодаются.

anonymous
()
Ответ на: комментарий от tailgunner

Угу, по ссылке TC так и есть — «ссылка на особую инструкцию есть где-то в файле jdk7/hotspot/src/cpu/x86/vm/x86_*.ad». Hotspot тут явно неспроста.

anonymous
()
Ответ на: комментарий от maloi

нет. я думал там есть короткий путь. jni вызов тяжелее участка который надо вызвать

ckotinko ☆☆☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.