;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Laboratório no Rio compra supercomputador de R$ 60 mi para pesquisas

15/07/2015 20h26

Rio - Um supercomputador capaz de realizar um quatrilhão (1 seguido de 15 zeros) de operações matemáticas por segundo entra em fase de testes nas próximas semanas no Laboratório Nacional de Computação Científica (LNCC), em Petrópolis, cidade na Região Serrana do Estado do Rio. Comprado por R$ 60 milhões à sa Atos-Bull, o equipamento permitirá o processamento de grandes quantidades de dados em pesquisas de diferentes áreas - médica, nanotecnologia e meteorologia são algumas delas. O o será gratuito aos pesquisadores.

Batizado de Santos Dumont, o supercomputador tem capacidade entre 20 e 25 vezes maior do que os computadores brasileiros de alto desempenho "abertos", os disponíveis à comunidade científica. "Isso obrigava o pesquisador a dimensionar sua proposta de estudo. Porque os dados tinham que caber nos computadores que tínhamos. Não se podia pensar muito grande", disse o diretor do LNCC (vinculado ao Ministério de Ciência e Tecnologia), Pedro Dias.

A outra opção dos pesquisadores era buscar parcerias no exterior para obter "tempo de processamento" em supercomputadores. "Os problemas estão cada vez mais complexos e era necessário mais espaço para processamento. Vi autoria de artigos e patentes serem divididas simplesmente porque o colega estrangeiro cedeu tempo de processamento", afirmou Dias.

O supercomputador, instalado em contêineres no terreno do LNCC, integra o Sistema Nacional de Processamento de Alto Desempenho, formado por dez instituições, entre universidades e institutos federais. Os interessados em utilizá-lo devem submeter o projeto de pesquisa à direção do laboratório. A decisão caberá a uma comissão de cientistas brasileiros.

Entre as linhas de pesquisa que se beneficiarão do aparelho estão as de óleo e gás, como a simulação de reservatórios da camada do pré-sal ou de modelagens de fraturas de rochas, como a que causou o vazamento no campo de Frade, litoral norte fluminense, em 2012. Na área de biologia celular, há estudos para desenvolver medicamentos para doenças negligenciadas pela indústria farmacêutica, como as tropicais (Chagas e leishmaniose, entre outras). "A Fundação Oswaldo Cruz articula uma rede nacional para o desenvolvimento desses novos fármacos", afirmou Dias.

Santos Dumont, o supercomputador, saiu do Porto do Rio rumo a Petrópolis em quatro carretas após saga burocrática iniciada em 2009, quando os então presidentes Luiz Inácio Lula da Silva e Nicolas Sarkozy am acordo de cooperação científica Brasil-França. Foi na capital sa que Santos Dumont decolou com dirigíveis e fez o primeiro voo no 14-Bis, daí a homenagem.

Em 2011, houve novas exigências do Ministério da Ciência e Tecnologia para a compra do equipamento: a empresa teria que transferir tecnologia, fundar um centro de pesquisa de computadores de alto desempenho no Rio, outro de aplicações industriais e ainda ter projeto de construir máquinas no Brasil.

O projeto todo sairia por R$ 123 milhões. Por causa da crise e do contingenciamento de recursos, a última etapa ainda não saiu do papel. A fábrica para a construção de computadores de alto desempenho ficará para uma segunda fase. Do lado de fora de um dos contêineres, uma frase de Santos Dumont resume a história do supercomputador: "as invenções são, sobretudo, resultado de trabalho teimoso".