трассировка лучей с CUDA

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

Итак, вот ваши варианты:

Если вы знаете полный тему, которую вы ищете, измените свой код следующим образом:

Set Mail = olItms.Find("[Subject] = ""This Sketch Email""")

Если вы не знаете (или не будете) знать полный объект, вы можете прокрутить свою папку «Входящие» и выполнить поиск частичная сюжетная строка:

Untested

Sub Search_Inbox()

Dim myOlApp As New Outlook.Application
Dim myNameSpace As Outlook.NameSpace
Dim myInbox As Outlook.MAPIFolder
Dim myitems As Outlook.Items
Dim myitem As Object
Dim Found As Boolean

Set myNameSpace = myOlApp.GetNamespace("MAPI")
Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
Set myitems = myInbox.Items
Found = False

For Each myitem In myitems
    If myitem.Class = olMail Then
        If InStr(1, myitem.Subject, "sketch") > 0 Then
            Debug.Print "Found"
            Found = True
        End If
    End If
Next myitem

'If the subject isn't found:
If Not Found Then
    NoResults.Show
End If

myOlApp.Quit
Set myOlApp = Nothing

End Sub

Надеюсь, что это поможет!

11
задан Morten Christiansen 2 September 2008 в 13:12
поделиться

3 ответа

Одна вещь очень опасаться в CUDA состоит в том, что расходящийся поток управления в Вашем коде ядра абсолютно УНИЧТОЖАЕТ производительность, из-за структуры базовых аппаратных средств GPU. GPU обычно имеют в широком масштабе параллельные данным рабочие нагрузки с высоко когерентным потоком управления (т.е. у Вас есть пара миллиона пикселей, на каждом из которого (или по крайней мере большие ряды который) будет управлять та же самая программа программы построения теней, даже беря то же направление посредством всех ответвлений. Это позволяет им сделать некоторую аппаратную оптимизацию, только как наличие единственного кэша инструкции, единицы выборки, и декодировать логику для каждой группы из 32 потоков. В идеальном падеже, который общ в графике, они могут широковещательно передать ту же инструкцию ко всем 32 наборам модулей выполнения в том же цикле (это известно как SIMD или Несколько-данных Единственной Инструкции). Они могут эмулировать MIMD (Многоадресная команда) и SPMD (Единственная Программа), но когда потоки в Потоковой передаче многопроцессорной системы (SM) отличаются (выньте различные пути выполнения кода из ответвления), логика проблемы на самом деле переключается между каждым путем выполнения кода на основе цикла циклом. Можно предположить, что, в худшем случае, где все потоки находятся на отдельных трактах, использование аппаратных средств просто понизилось фактором 32, эффективно уничтожив любое преимущество, которым Вы будете обладать путем работы GPU по ЦП, особенно считания издержек связанными с маршалингом набора данных от ЦП, по PCIe, к GPU.

Тем не менее трассировка лучей, в то время как параллель данных в некотором смысле, имеет широко отличающийся поток управления даже для скромно сложных сцен. Даже если Вам удастся отобразить набор плотно расположенных с интервалами лучей, которые Вы выбрасываете друг прямо рядом с другом на тот же СМ, данные и местность инструкции, которую Вы имеете для начального возврата, то не будет содержать очень долго. Например, вообразите все 32 высоко когерентных луча, возвращающиеся от сферы. Они все войдут в довольно различные направления после этого возврата и вероятно поразят объекты, сделанные из различных материалов, с различными условиями освещения, и т.д. Каждый материал и набор освещения, поглощения газов, и т.д. условиям связали его собственный поток команд с ним (для вычислений преломления, отражения, поглощения, и т.д.), и таким образом, становится довольно трудным работать на том же потоке команд даже значительная часть потоков в СМ. Эта проблема, с текущим уровнем техники в коде трассировки лучей, уменьшает Ваше использование GPU фактором 16-32, который может сделать производительность недопустимой для Вашего приложения, особенно если это в реальном времени (например, игра). Это все еще могло бы превосходить ЦП для, например, систему средств визуализации.

Существует появляющийся класс MIMD или акселераторов SPMD, посмотревших на теперь в научном сообществе. Я посмотрел бы на них как на логические платформы для программного обеспечения, трассировки лучей в реальном времени.

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

21
ответ дан 3 December 2019 в 01:30
поделиться

Это может, конечно, быть сделано, было сделано и в настоящее время является горячей темой среди гуру Cuda и трассировки лучей. Я запустил бы путем просматривания http://www.nvidia.com/object/cuda_home.html

Но это - в основном проблема исследования. Люди, которые делают его хорошо, вытаскивают рецензируемые научно-исследовательские работы из него. Но хорошо в этой точке все еще означает, что лучшие результаты GPU/Cuda приблизительно конкурентоспособны по отношению к лучшим из класса решениям на ЦП/многоядерном/SSE. Таким образом, я думаю, что немного рано предположить, что использование Cuda собирается ускорить трассировщик лучей. Проблема состоит в том, что, хотя трассировка лучей "смущающе параллельна" (как они говорят), это не вид "решенной входной и выходной проблемы" размера, которая отображается прямо на GPU - Вы хотите деревья, стеки, динамические структуры данных, и т.д. Это может быть сделано с Cuda/GPU, но это хитро.

Ваш вопрос не согласился с Вашим уровнем опыта или целями Вашего проекта. Если бы это - Ваш первый трассировщик лучей, и Вы просто пытаетесь учиться, я избежал бы Cuda - он возьмет Вас 10x дольше для разработки, и Вы, вероятно, не получите хорошую скорость. Если Вы - умеренно опытный программист Cuda и ищете сложную и трассировку лучей проекта, просто забавная вещь учиться, любой ценой, попытайтесь сделать это в Cuda. Если Вы делаете коммерческое приложение, и Вы надеетесь получать конкурентоспособный край скорости - хорошо, это - вероятно, дерьмо, стреляют в эту точку... Вы могли бы получить край производительности, но за счет более трудной разработки и зависимости от конкретных аппаратных средств.

Перепроверьте через год, ответ может отличаться после другого поколения или двух из скорости GPU, разработки компилятора Cuda и опыта научного сообщества.

9
ответ дан 3 December 2019 в 01:30
поделиться

Nvidia demo'ed трассировщик лучей в CUDA на их конференции NVision в этом году. Вот ссылка на их слайды об этом.

http://www.nvidia.com/object/nvision08-IRT.html

4
ответ дан 3 December 2019 в 01:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: